In digital communications networks, data that is to be transmitted may receive processing prior to transmission with various techniques to help improve the performance of the network in the presence of noise and interference. For example, in a code-division multiple access (CDMA) cellular communications network, data bits may be pre-processed using forward error correction (FEC) techniques prior to transmission in order to combat a hostile channel environment. The data bits may be cyclic redundancy check (CRC) encoded and then appended with the CRC bits, convolutionally or turbo encoded, have their symbols repeated, punctured, and interleaved. To further help improve the performance, some networks are capable of transmitting at different data rates, with lower data rates being used in poor signal quality channels and higher data rates in high quality channels.
All of this processing prior to transmission requires that a decoder at the receiving end of the transmission be relatively complex to be able to recover the original data bits from the received transmission. A variety of parameters, such as block size, CRC length and polynomial, code rates, decoding type, symbol repetition factors, symbol puncture length and pattern, frame puncture control, logical transport unit (LTU) size, blind transport format detection (BTFD) sizes, and so forth, are needed at the decoder in order for the decoder to extract the data bits. To further complicate the decoder, each channel present in the received signal may have been processed differently therefore, there may be a different set of parameters for each channel.
A conventional decoder architecture stores a single set of decode parameters in the decoder. The conventional decoder is typically optimized to decode a block of received data as efficiently as possible. Upon receipt of a block of data, a digital signal processor (DSP) or mobile controller unit (MCU) can program the conventional decoder with a set of parameters to apply to the block of data. This may continue until the block of data is decoded. Once the decoder has completed decoding the block of data, it can interrupt the DSP to request additional blocks of data.
One disadvantage of the prior art is that the decoder stores one set of parameters. This may have been effective when only a few decodes are to be performed, but with modern communications systems, such as CDMA2000 and WCDMA, a plurality of decodes need to be performed. This leads to the DSP having to program the decoder with more and more sets of parameters within a single radio frame. This can place a heavy overhead on the DSP, which may also have a long list of complex tasks that it has to perform. The DSP, in having to frequently deal with the decoder, may not be able to complete its own tasks in a timely manner.
Another disadvantage of the prior art is that the decoder needs to interrupt the DSP each time it decodes a block of data (whether successfully or unsuccessfully). If the decode was successful, the interrupt may be to report success and to request additional data. If the decode was unsuccessful, the interrupt may be to request an additional set of parameters. Since the DSP is typically busy performing its own tasks, the DSP may not be able to respond to the interrupts as they arrive. This can lead to an increase in the frequency and length of decoder idle times.